window.onload = function() {
	editor.setOpt({
				emotionLocalization : false
			});

	emotion.SmileyPath = editor.options.emotionLocalization === true
			? 'images/'
			: "http://img.baidu.com/hi/";
	emotion.SmileyBox = createTabList(emotion.tabNum);
	emotion.tabExist = createArr(emotion.tabNum);

	initImgName();
	initEvtHandler("tabHeads");
};

function initImgName() {
	for (var pro in emotion.SmilmgName) {
		var tempName = emotion.SmilmgName[pro], tempBox = emotion.SmileyBox[pro], tempStr = "";

		if (tempBox.length)
			return;
		for (var i = 1; i <= tempName[1]; i++) {
			tempStr = tempName[0];
			if (i < 10)
				tempStr = tempStr + '0';
			tempStr = tempStr + i + '.gif';
			tempBox.push(tempStr);
		}
	}
}

function initEvtHandler(conId) {
	var tabHeads = $G(conId);
	for (var i = 0, j = 0; i < tabHeads.childNodes.length; i++) {
		var tabObj = tabHeads.childNodes[i];
		if (tabObj.nodeType == 1) {
			domUtils.on(tabObj, "click", (function(index) {
						return function() {
							switchTab(index);
						};
					})(j));
			j++;
		}
	}
	switchTab(0);
	$G("tabIconReview").style.display = 'none';
}

function InsertSmiley(url, evt) {
	var obj = {
		src : editor.options.emotionLocalization
				? editor.options.UEDITOR_HOME_URL + "dialogs/emotion/" + url
				: url
	};
	obj._src = obj.src;
	editor.execCommand('insertimage', obj);
	if (!evt.ctrlKey) {
		dialog.popup.hide();
	}
}

function switchTab(index) {

	autoHeight(index);
	if (emotion.tabExist[index] == 0) {
		emotion.tabExist[index] = 1;
		createTab('tab' + index);
	}
	// 获取呈现元素句柄数组
	var tabHeads = $G("tabHeads").getElementsByTagName("span"), tabBodys = $G("tabBodys")
			.getElementsByTagName("div"), i = 0, L = tabHeads.length;
	// 隐藏所有呈现元素
	for (; i < L; i++) {
		tabHeads[i].className = "";
		tabBodys[i].style.display = "none";
	}
	// 显示对应呈现元素
	tabHeads[index].className = "focus";
	tabBodys[index].style.display = "block";
}

function autoHeight(index) {
	var iframe = dialog.getDom("iframe"), parent = iframe.parentNode.parentNode;
	switch (index) {
		case 0 :
			iframe.style.height = "380px";
			parent.style.height = "392px";
			break;
		case 1 :
			iframe.style.height = "220px";
			parent.style.height = "232px";
			break;
		case 2 :
			iframe.style.height = "260px";
			parent.style.height = "272px";
			break;
		case 3 :
			iframe.style.height = "300px";
			parent.style.height = "312px";
			break;
		case 4 :
			iframe.style.height = "140px";
			parent.style.height = "152px";
			break;
		case 5 :
			iframe.style.height = "260px";
			parent.style.height = "272px";
			break;
		case 6 :
			iframe.style.height = "230px";
			parent.style.height = "242px";
			break;
		default :

	}
}

function createTab(tabName) {
	var faceVersion = "?v=1.1", // 版本号
	tab = $G(tabName), // 获取将要生成的Div句柄
	imagePath = emotion.SmileyPath + emotion.imageFolders[tabName], // 获取显示表情和预览表情的路径
	positionLine = 11 / 2, // 中间数
	iWidth = iHeight = 35, // 图片长宽
	iColWidth = 3, // 表格剩余空间的显示比例
	tableCss = emotion.imageCss[tabName], cssOffset = emotion.imageCssOffset[tabName], textHTML = ['<table class="smileytable">'], i = 0, imgNum = emotion.SmileyBox[tabName].length, imgColNum = 11, faceImage, sUrl, realUrl, posflag, offset, infor;

	for (; i < imgNum;) {
		textHTML.push('<tr>');
		for (var j = 0; j < imgColNum; j++, i++) {
			faceImage = emotion.SmileyBox[tabName][i];
			if (faceImage) {
				sUrl = imagePath + faceImage + faceVersion;
				realUrl = imagePath + faceImage;
				posflag = j < positionLine ? 0 : 1;
				offset = cssOffset * i * (-1) - 1;
				infor = emotion.SmileyInfor[tabName][i];

				textHTML
						.push('<td  class="'
								+ tableCss
								+ '"   border="1" width="'
								+ iColWidth
								+ '%" style="border-collapse:collapse;" align="center"  bgcolor="transparent" onclick="InsertSmiley(\''
								+ realUrl.replace(/'/g, "\\'")
								+ '\',event)" onmouseover="over(this,\'' + sUrl
								+ '\',\'' + posflag
								+ '\')" onmouseout="out(this)">');
				textHTML.push('<span>');
				textHTML.push('<img  style="background-position:left '
						+ offset
						+ 'px;" title="'
						+ infor
						+ '" src="'
						+ emotion.SmileyPath
						+ (editor.options.emotionLocalization
								? '0.gif" width="'
								: 'default/0.gif" width="') + iWidth
						+ '" height="' + iHeight + '"></img>');
				textHTML.push('</span>');
			} else {
				textHTML.push('<td width="' + iColWidth
						+ '%"   bgcolor="#FFFFFF">');
			}
			textHTML.push('</td>');
		}
		textHTML.push('</tr>');
	}
	textHTML.push('</table>');
	textHTML = textHTML.join("");
	tab.innerHTML = textHTML;
}

function over(td, srcPath, posFlag) {
	td.style.backgroundColor = "#ACCD3C";
	$G('faceReview').style.backgroundImage = "url(" + srcPath + ")";
	if (posFlag == 1)
		$G("tabIconReview").className = "show";
	$G("tabIconReview").style.display = 'block';
}

function out(td) {
	td.style.backgroundColor = "transparent";
	var tabIconRevew = $G("tabIconReview");
	tabIconRevew.className = "";
	tabIconRevew.style.display = 'none';
}

function createTabList(tabNum) {
	var obj = {};
	for (var i = 0; i < tabNum; i++) {
		obj["tab" + i] = [];
	}
	return obj;
}

function createArr(tabNum) {
	var arr = [];
	for (var i = 0; i < tabNum; i++) {
		arr[i] = 0;
	}
	return arr;
}
